package view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import Both.Transport;
import Both.Ville;

import controleur.*;

/**
 * @author Blond Jeremie
 * 
 *         Description:
 * 
 *         cette class devra etre appeler par la class Fenetre1 elle a pour but
 *         de permettre d'ajouter un nouveau contact ou d'en modifier un deja
 *         existant. Le titre de la fenetre est a revoir, car il faudrait que
 *         lorsque l'on appel la Fenetre2 en appuyant sur le bouton modifier de
 *         la Fenetre1, le titre de la Fenetre2 devienne "Modifier un Contact"
 *         et le bouton "Ajouter/Modifier" n'aurait que l'etiquette "Modifier".
 *         Et inversement si on appel la Fenetre2 en appuyant sur le bouton
 *         Ajouter de la Fenetre1.
 * 
 */
public class Fenetre3 extends JFrame {

    private JTextField NomAdmin;
    private JPasswordField PassAdmin;
    private JLabel infoLabel;
    private JLabel infoLabel2;
    private JButton Client;
    private JButton Admin;
    private JButton valider;
    private ToutFenetre tout;

    public Fenetre3(String titreFenetre3, ToutFenetre tout) {
        // on appelle le constructeur parent pour donner le titre "s" a la
        // fenetre 2
        super(titreFenetre3);
        this.tout = tout;
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        /* 1- Initialisation du container. */
        this.setLayout(null);

        /* 2- Création et initialisation d'une série de composants. */

        infoLabel = new JLabel("Bienvenue");
        infoLabel2 = new JLabel("Donnez votre login et votre mot de passe");
        infoLabel2.setVisible(false);
        NomAdmin = new JTextField("Login");
        NomAdmin.setPreferredSize(new Dimension(180, 20));
        NomAdmin.setVisible(false);

        PassAdmin = new JPasswordField("PassWord");
        PassAdmin.setPreferredSize(new Dimension(180, 20));
        PassAdmin.setVisible(false);

        JSeparator separator = new JSeparator();

        Client = new JButton("Client");
        Client.addActionListener(new ActionClient(this.tout));

        Admin = new JButton("Admin");
        Admin.addActionListener(new ActionAdmin(this));

        valider = new JButton("Valider");
        valider.addActionListener(new ActionValider(this, this.tout));
        valider.setVisible(false);

        /* a- ajout du label contenant le message bienvenu. */

        infoLabel.setBounds(20, 10, 150, 30);
        this.add(infoLabel);
        /* ************************************************************************************** */

        /* b- ajout du bouton Client. */
        Client.setBounds(20, 50, 150, 30);
        this.add(Client);
        /* ************************************************************************************** */

        /* c- le bouton Admin. */
        Admin.setBounds(180, 50, 150, 30);
        this.add(Admin);
        /* ************************************************************************************** */

        /* d- Un séparateur. */
        separator.setBounds(0, 85, 500, 5);
        this.add(separator);

        /* ************************************************************************************** */
        /* e- le champs de saisie pour le nom. */
        NomAdmin.setBounds(20, 90, 150, 30);
        this.add(NomAdmin);
        /* ************************************************************************************** */

        /* f- le champs de saisie pour le passWord */
        PassAdmin.setBounds(20, 120, 150, 30);
        this.add(PassAdmin);
        /* ************************************************************************************** */

        /* g- Le bouton permettant d'ajouter ou de modifier. */
        valider.setBounds(180, 105, 110, 30);
        this.add(valider);
        /* ************************************************************************************** */

        /* h- Le Label. */
        infoLabel2.setBounds(20, 55, 300, 30);
        this.add(infoLabel2);
        /* ************************************************************************************** */

        this.setMinimumSize(new Dimension(350, 200));
        this.setLocationRelativeTo(null);
    }

    public String getName() {
        return NomAdmin.getText();
    }

    public String getPassWord() {
        return PassAdmin.getText();
    }

    public void setVisible(boolean myBoolean) {
        Admin.setVisible(!myBoolean);
        Client.setVisible(!myBoolean);
        valider.setVisible(myBoolean);
        NomAdmin.setVisible(myBoolean);
        PassAdmin.setVisible(myBoolean);
        infoLabel2.setVisible(myBoolean);
    }

}

class ActionAdmin implements ActionListener {
    // pour valider les nombres rentrés par les deux joueurs
    Fenetre3 monInterface;

    public ActionAdmin(Fenetre3 monInterface) {
        this.monInterface = monInterface;
    }

    public void actionPerformed(ActionEvent a) {
        // rend le reste de la fenetre visible
        monInterface.setVisible(true);
    }
}

class ActionValider implements ActionListener {
    // pour valider les nombres rentrés par les deux joueurs
    Fenetre3 monInterface;
    ToutFenetre tout;

    public ActionValider(Fenetre3 monInterface, ToutFenetre tout) {
        this.monInterface = monInterface;
        this.tout = tout;
    }

    public void actionPerformed(ActionEvent a) {
        String login = monInterface.getName();
        String pwd = monInterface.getPassWord();

        if (login.equals(Serveur.Serveur.adminLogin)
                && pwd.equals(Serveur.Serveur.adminPwd)) {
            tout.maFenetre1.setType(2);
            tout.maFenetre1.setCheckBoxInvisible();
            tout.maFenetre1.show(true);
            tout.maFenetre3.show(false);

        }

    }
}

class ActionClient implements ActionListener {

    ToutFenetre tout;

    public ActionClient(ToutFenetre tout) {
        this.tout = tout;
    }

    public void actionPerformed(ActionEvent a) {
        tout.maFenetre1.setType(1);
        tout.maFenetre3.show(false);
        tout.maFenetre1.show(true);

    }
}